A storage controller is a physical processing device that is used to store and retrieve data on behalf of one or more hosts. A network storage controller can be configured (e.g., by hardware, software, firmware, or any combination thereof) to operate as a storage server that serves one or more clients on a network, to store and manage data in a set of mass storage devices, such as magnetic or optical storage-based disks, tapes, or flash memory. Some storage servers are designed to service file-level requests from hosts, as is commonly the case with file servers used in a network attached storage (NAS) environment. Other storage servers are designed to service block-level requests from hosts, as with storage servers used in a storage area network (SAN) environment. Still other storage servers are capable of servicing both file-level requests and block-level requests, as is the case with certain storage servers made by NetApp®, Inc. of Sunnyvale, Calif., employing the Data ONTAP® storage operating system.
Quality of service (QoS) is an important feature in networking and telecommunication systems. QoS can be defined as prioritizing data flow from different entities. For example, an application may be guaranteed a required bit rate, delay, level of jitter, packet-dropping probability and/or bit error rate by a network. A network customer and a service provider typically enter into a service level agreement (SLA) that defines the QoS provided to the customer. A network customer can be defined as an entity that uses services provided by the service provider. Flow classification is an important step in providing QoS by determining, for example, a customer that is associated with an information element, for example, a data packet or frame, being transmitted across the network. The network handles the information element based on the flow classification and the QoS agreement.
With the increased use of clustered storage server networks, cloud storage services, virtualized storage, and streaming multimedia being provided from these storage services, QoS is also becoming increasingly important in storage server systems and services to meet customer demands. However, common software-only solutions for flow classification disrupt the storage server system by adding additional processing along the path of execution. Such solutions may not be predictable enough to provide services under SLA or QoS constraints, especially in high-end storage systems. As line rates and traffic increase for storage services, this problem becomes even more acute.